class Light:
    def __init__(self, current_index=0):
        """
        初始化方法： 用于初始化实例(对象)属性
        """
        print(f"初始化函数执行了")
        self.enabled = False
        self.current_index = current_index
        self.colors = ["white", "blue", "red", "pink"]

    def get_color(self):
        return self.colors[self.current_index]

    def change_color(self):
        self.current_index += 1
        if self.current_index == len(self.colors):
            self.current_index = 0

    def open(self):
        self.enabled = True

    def close(self):
        self.enabled = False

    def is_opening(self):
        return self.enabled

    def __str__(self):
        """
        一个实例的字符串表示
        """
        return "醒醒啦"

    def __del__(self):
        """
        析构函数： 析构函数用于内存销毁之前的清理工作
        当实例不在被使用， 执行实例的析构函数
        """
        print(f"析构函数执行了")


# 对象l1就是类Light的一个实例
l1 = Light()
# print(type(Light), type(l1))
# 变量名后方可以使用()
# print(callable(Light), callable(int), callable(10))

print(l1)

print(l1.is_opening())
if l1.is_opening():
    print(f"目前状态为打开，即将关闭")
    l1.close()
else:
    print(f"目前尚未开灯，请开灯")
    l1.open()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())
    l1.change_color()
    print(l1.get_color())

# 实例a  就是类int 的一个对象
# a = int(10)
# 对象d0  就是类dict 的一个实例
# d0 = dict()


print(f"第一个灯===========================")

l2 = Light(current_index=1)
print(l2.is_opening())
l2.open()
print(l2.is_opening())

if l2.is_opening():
    print(l2.get_color())
    l2.change_color()
    print(l2.get_color())
    l2.change_color()
    print(l2.get_color())
    l2.change_color()
    l2.close()

print(l2.is_opening())



